package view.gui.model;

import java.util.ArrayList;
import java.util.List;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

import view.gui.altaComponente.AltaKitsMain;




import model.ArticuloComponente;
import model.KitDao;
import model.vos.Articulo;
import model.vos.Kit;



public class MyModelTree extends DefaultTreeModel{
	KitDao kitDao = new KitDao();
	AltaKitsMain kitsMain;
	
	
	public MyModelTree(AltaKitsMain kitMain){		
		super(new DefaultMutableTreeNode("KITS"));
		this.kitsMain = kitMain;
		List<Kit> allKits = kitDao.findAllKitsByTemp(kitMain.getPrincipal().getTemporada());
		
		 //ArrayList<ArticuloComponente> aKits = ((Kit)allKits).getChildren();
		
		
		//Recorro los kits y los agrego como nodos
		    for (Kit kit : allKits) {
				DefaultMutableTreeNode nodoKitNuevo = new DefaultMutableTreeNode(kit);
				ArrayList<ArticuloComponente> articulos = ((Kit)kit).getChildren();
				//Recorro los articulos y se los agrego como hijos a los kit.
				for( ArticuloComponente art: articulos){
					Articulo articulo = (Articulo)art;
					DefaultMutableTreeNode nodoArtNuevo = new DefaultMutableTreeNode(articulo);
					nodoKitNuevo.add(nodoArtNuevo);
				}
				DefaultMutableTreeNode raiz =(DefaultMutableTreeNode) getRoot();
				raiz.add(nodoKitNuevo);
				
			}		    		  		  
		
	}
	
	public void actualizar(){
		List<Kit> allKits = kitDao.findAllKitsByTemp(kitsMain.getPrincipal().getTemporada());				 		
		DefaultMutableTreeNode raiz =(DefaultMutableTreeNode) getRoot();
		raiz.removeAllChildren();
		//Recorro los kits y los agrego como nodos
		    for (Kit kit : allKits) {
				DefaultMutableTreeNode nodoKitNuevo = new DefaultMutableTreeNode(kit);
				ArrayList<ArticuloComponente> articulos = ((Kit)kit).getChildren();
				//Recorro los articulos y se los agrego como hijos a los kit.
				for( ArticuloComponente art: articulos){
					Articulo articulo = (Articulo)art;
					DefaultMutableTreeNode nodoArtNuevo = new DefaultMutableTreeNode(articulo);
					nodoKitNuevo.add(nodoArtNuevo);
				}
				
				raiz.add(nodoKitNuevo);
				
			}		   
		
	 }
	

}
